// 详细的见 jptspider 和 Python_Spider.md
// RegExp 对象的 test() 方法用于测试给定的字符串是否符合条件
var re = /^\d{3}\-\d{3,8}$/;  // 不用管转义的问题, 格式为: /正则表达式/
console.log(re.test('010-12345'));  // true
console.log(re.test('010-1234x'));  // false
console.log(re.test('010 12345'));  // false

// split() 切分字符串
console.log('a b   c'.split(/\s+/));  // ['a', 'b', 'c']
console.log('a,b, c  d'.split(/[\s\,]+/));  // ['a', 'b', 'c', 'd']
console.log('a,b;; c  d'.split(/[\s\,\;]+/));  // ['a', 'b', 'c', 'd']

// () 表示要提取的分组, 如果正则表达式中定义了组, 就可以在 RegExp 对象上用 exec() 方法提取出子串来
var re = /^(\d{3})-(\d{3,8})$/;
console.log(re.exec('010-12345'));  // ['010-12345', '010', '12345']
console.log(re.exec('010 12345'));  // null

// 贪婪匹配, 正则匹配默认是贪婪匹配
var re = /^(\d+)(0*)$/; console.log(re.exec('102300'));  // ['102300', '102300', '']
// 由于 \d+ 采用贪婪匹配, 直接把后面的0全部匹配了, 结果 0* 只能匹配空字符串了, 加个 ? 就可以让 \d+ 采用非贪婪匹配
var re = /^(\d+?)(0*)$/; console.log(re.exec('102300'));  // ['102300', '1023', '00']

// 全局搜索, js 特有的 g(全局), i(忽略大小写), m(多行匹配)
var r1 = /test/g;  // 等价于: var r2 = new RegExp('test', 'g');
// 全局匹配可以多次执行 exec() 方法来搜索一个匹配的字符串, 每次运行 exec(), 会更新 lastIndex 属性, 表示上次匹配到的最后索引
var s = 'JavaScript, VBScript, JScript and ECMAScript', re=/[a-zA-Z]+Script/g;
console.log(re.exec(s));    // ['JavaScript']
console.log(re.lastIndex);  // 10
console.log(re.exec(s));    // ['VBScript']
console.log(re.lastIndex);  // 20
console.log(re.exec(s));    // ['JScript']
console.log(re.lastIndex);  // 29
console.log(re.exec(s));    // ['ECMAScript']
console.log(re.lastIndex);  // 44
console.log(re.exec(s));    // null, 直到结束仍没有匹配到
